package com.hangzhou.xyj.ui.widget.views;

import android.content.Context;
import android.graphics.Bitmap;
import android.util.AttributeSet;
import android.widget.ImageView;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;

/**
 * 简单封装IamgeView，便于使用和维护
 *
 * @author neo.duan
 */
public class MyImageView extends ImageView {
    private DisplayImageOptions mOptions;

    public MyImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    public MyImageView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public MyImageView(Context context) {
        this(context, null);
    }

    /**
     * 初始化显示的option
     */
    private void init() {
        mOptions = new DisplayImageOptions.Builder()
//        .showImageForEmptyUri(R.drawable.image_default)  //加载前显示图片
//        .showImageOnFail(R.drawable.image_default)  //加载失败显示图片
                .resetViewBeforeLoading(false)
                .cacheOnDisc(true)
                .considerExifParams(true)
                .imageScaleType(ImageScaleType.EXACTLY)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .displayer(new FadeInBitmapDisplayer(300))  //显示动画
                .build();

        //设置裁剪中间部分
        this.setScaleType(ScaleType.CENTER_CROP);
    }


    /**
     * 根据图片url加载图片
     *
     * @param url 格式为：
     *            显示图片所使用的uri：
     */
    public void displayImage(String url) {
        Object tagObj = getTag();
        if (tagObj == null) {
            setTag(url);
        } else if (tagObj instanceof String) {
            if (tagObj.equals(url)) {
                return;
            } else {
                setTag(url);
            }
        }
        ImageLoader.getInstance().displayImage(url, this, mOptions);
    }

    /**
     * 根据uri显示图片
     *
     * @param uri 格式如下
     *            String imageUri = "http://site.com/image.png"; // from Web
     *            String imageUri = "file:///mnt/sdcard/image.png"; // from SD card
     *            String imageUri = "content://media/external/audio/albumart/13"; // from content provider
     *            String imageUri = "assets://image.png"; // from assets
     *            String imageUri = "drawable://" + R.drawable.image; // from drawables (only images, non-9patch)
     */
    public void displayImageForUri(String uri) {
        displayImage(uri);
    }

}
